/*
 * @Author: wwssaabb
 * @Date: 2021-07-26 16:47:54
 * @LastEditTime: 2021-07-26 16:48:20
 * @FilePath: \react-admin-server\hash.js
 */
const bcrypt=require('bcrypt') 


/**
*生成随机字符串 
*genSalt方法接收一个数值
*数值越大生成的随机字符串复杂度越高，反之越低
*默认值为10
*返回一个随机字符串
*/

/**
*对密码进行加密
*hash方法接收一个俩个参数，第一个是需要加密的明文，第二个是随机字符串salt
*返回对明文加密的字符串
 */

/**
*判断第二个参数是否为第一个参数的加密
*compare方法接收一个俩个参数，第一个是明文密码，第二个是加密的密码
*返回Boolean值，表示这两个值是否为加密关系
 */

/**
 * 
 * @param {String} psw ，需要加密的密码
 * @returns String  ,返回加密好的密码
 */
async function run(psw){
  const salt=await bcrypt.genSalt()
  const res=await bcrypt.hash(psw,salt)
  return res
}

/**
 * 判断这两个值是否为加密关系
 * @param {*} cleartext ,明文密码
 * @param {*} password  ,已经加密的密码
 * @returns Boolean
 */
async function check(cleartext,password){
  return await bcrypt.compare(cleartext,password)
}

module.exports={
  run,check
}